#!/bin/bash

# 拉取多个Git仓库的脚本
# 使用方法:
# 1. 直接在脚本中添加仓库地址到REPOS数组
# 2. 或创建repos.txt文件，每行一个仓库地址

# 定义要拉取的git仓库地址列表
REPOS=(
    # 在这里添加更多仓库地址，每行一个
    # "https://example.com/repo2.git"
    # "https://example.com/repo3.git"
)

# 检查是否存在repos.txt文件，如果存在则从文件读取仓库列表
if [ -f "repos.txt" ]; then
    echo "发现repos.txt文件，从文件读取仓库列表..."
    # 清空REPOS数组
    REPOS=()
    # 读取文件内容到数组
    while IFS= read -r line; do
        # 跳过空行和注释行
        if [[ -n "$line" && ! "$line" =~ ^# ]]; then
            REPOS+=("$line")
        fi
    done < "repos.txt"
fi

# 检查仓库列表是否为空
if [ ${#REPOS[@]} -eq 0 ]; then
    echo "错误: 没有找到任何仓库地址!"
    echo "请在脚本中添加仓库地址或创建repos.txt文件."
    exit 1
fi

# 遍历仓库列表并拉取
for repo in "${REPOS[@]}"; do
    echo "
正在拉取仓库: $repo"
    # 提取仓库名称作为目录名
    repo_name=$(basename "$repo" .git)
    # 检查目录是否已存在
    if [ -d "$repo_name" ]; then
        echo "仓库目录 $repo_name 已存在，尝试更新..."
        cd "$repo_name"
        git pull
        if [ $? -ne 0 ]; then
            echo "更新仓库 $repo 失败!"
        else
            echo "更新仓库 $repo 成功!"
        fi
        cd ..
    else
        echo "克隆新仓库 $repo..."
        git clone "$repo"
        if [ $? -ne 0 ]; then
            echo "克隆仓库 $repo 失败!"
        else
            echo "克隆仓库 $repo 成功!"
        fi
    fi
done

echo "
所有仓库操作已完成!"